package org.ccay.validator.validators;

import org.ccay.core.util.StringUtil;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator;

/**
 * 给验证器使用 需要在验证器类型中注册
 * 长度验证 一个中文按3个计算
 * 
 * @since 2012-1-12
 */
public class StringLengthValidator extends StringLengthFieldValidator {
	public void validate(Object object) throws ValidationException {
		//获取验证属性名称
		String fieldName = getFieldName();
		//获取当前属性的value
		String fieldVal = (String) getFieldValue(fieldName, object);
		//获取utf8的长度
		int length;
		//如果为空 设置长度为0
		if (fieldVal == null) {
			return;
		}
		length = StringUtil.getUTF8Length(fieldVal);
		//如果小于最小的长度  大于最大的长度 那么把验证信息加入错误信息中
		if (length < super.getMinLength() || length > super.getMaxLength()){
			addFieldError(fieldName, object);
		}
	}
}
